Чтобы действительно освоить Git, нужно заглянуть за удобную для пользователя поверхность гладкой оболочки команд и понять внутреннюю структуру—низкоуровневый механизм, управляющий внутренней базой данных объектов Git. Эта база данных представляет собой файловую систему с адресацией по содержимому, где каждый фрагмент данных хранится как неизменяемый объект.
1. Гладкая оболочка против внутренней структуры
гладкой оболочки относится к командам высокого уровня (например, git status), предназначенным для взаимодействия с человеком. внутреннюю структуру относится к низкоуровневым командам, которые напрямую манипулируют базой данных объектов Git, давая нам доступ к настоящему внутреннему представлению системы.
2. База данных объектов
Git работает как хранилище ключ-значение внутри папки .git/objects каталога, хранящего внутренние объекты: бинарные объекты (blobs), деревья (trees), коммиты (commits)и метки (tags). Ветви, хотя часто обсуждаются вместе с объектами, служат ссылками на эти коммиты.
3. Адресация по алгоритму SHA-1
Каждый объект имеет уникальный 40-символьный шестнадцатеричный контрольный сумма по алгоритму SHA-1. Git оптимизирует хранение, используя первые два символа как имя подкаталога (например, af/), а оставшиеся 38 символов — как имя файла.